Estrutura de dados em C -> Pilhas
Publicado por Thiago Gallo 29/10/2004
[ Hits: 26.919 ]
Este é um programinha bem simples pra checar a existencia de um palindromo ( uma palavra ou frase que pode ser lida invertida tendo o mesmo sentido ), exemplo: "O Galo nada no lago".
O programa foi feito para mostrar uma possivel implementacao de pilhas em C.
#include <stdio.h> #include <string.h> ///////////////////////////////////////////////////////////// ////////////////////////// defines ////////////////////////// ///////////////////////////////////////////////////////////// #define MAX 100 // mudar tamanho da pilha typedef char TIPO_STACK; // mudar o tipo de pilha ///////////////////////////////////////////////////////////// ///////////////////// variaveis globais ///////////////////// ///////////////////////////////////////////////////////////// TIPO_STACK stack[MAX]; int top = -1; ///////////////////////////////////////////////////////////// /////////////////// protótipos de funções /////////////////// ///////////////////////////////////////////////////////////// void pop( TIPO_STACK * ); void push( TIPO_STACK ); ////////////////////////////FUNÇÃO/////////////////////////// //////////////////////////// MAIN /////////////////////////// ///////////////////////////////////////////////////////////// int main(void) { char fraseOriginal[MAX], fraseInvertida[MAX]; int i, tamanho; printf("\n=== Checar existencia de palindromo ===\n\n Entre com a frase a ser checada \n(sem caracteres especiais e sem espacos) \n\nFrase: "); scanf("%s", fraseOriginal); //// coloca frase na pilha //// tamanho = strlen( fraseOriginal ); for( i = 0; i < tamanho; i++ ) push( fraseOriginal[i] ); //// tira frase da pilha, agora invertida //// for( i = 0; i < tamanho; i++ ) pop( &fraseInvertida[i] ); fraseInvertida[tamanho] = '{FONTE}'; // finaliza string invertida //// mostra frase invertida //// printf("Frase Invertida: %s", fraseInvertida); //// checa se as duas strings sao iguais //// if( !strcmp( fraseOriginal, fraseInvertida) ) printf("\nResultado: Confere, palindromo existente\n\n"); else printf("\nResultado: Nao confere\n\n"); return ( 0 ); } // fim main ////////////////////////////FUNÇÃO/////////////////////////// /// Nome: pop() /// /// Descricao: remove elemento da pilha /// ///////////////////////////////////////////////////////////// void pop( TIPO_STACK *elemento ) { if( top == -1 ) // pilha vazia printf("\npilha vazia\n"); else { *elemento = stack[top]; top--; } } // fim funcao ////////////////////////////FUNÇÃO/////////////////////////// /// Nome: push() /// /// Descricao: insere elemento na pilha /// ////////////////////////////////////////////////////////////// void push( TIPO_STACK elemento ) { if( top == MAX ) // pilha cheia printf("\npilha cheia\n"); else { top++; stack[top] = elemento; } } // fim funcao
Conversão do número de dias em anos (meu segundo programa em C)
Parte 7 - Sessão de estudo sobre VETORES
Jogo da velha, para 2 jogadores, bem simples
Passkeys: A Evolução da Autenticação Digital
Instalação de distro Linux em computadores, netbooks, etc, em rede com o Clonezilla
Título: Descobrindo o IP externo da VPN no Linux
Armazenando a senha de sua carteira Bitcoin de forma segura no Linux
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Instalando Brave Browser no Linux Mint 22
vídeo pra quem quer saber como funciona Proteção de Memória:
Encontre seus arquivos facilmente com o Drill
Mouse Logitech MX Ergo Advanced Wireless Trackball no Linux
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
Remoção de propaganda com o programa Comskip[AJUDA] (1)
Linux Lite Demorando Muito Para Ligar (0)
PC não liga no filtro de linha (3)